// 创建用户集合
const mongoose = require('mongoose');
const Joi = require('Joi')
// 创建用户集合规则
const userSchema = new mongoose.Schema({
    username: {
        type: String,
        required: true,
        minlength: 2,
        maxlength: 20
    },
    email: {
        type: String,
        unique: true,
        required: true
    },
    password: {
        type: String,
        required: true
    },
    role: {
        type: String,
        required: true
    },
    status: {
        type: Number,
        default: 0
    }
});


// 创建集合
const User = mongoose.model('User', userSchema);

const addSchema = (user => { //设置添加用户的验证
    const schema = {
        username: Joi.string().min(2).max(12).required().error(new Error('用户名不符合验证规则')),
        email: Joi.string().email().required().error(new Error('邮箱格式不符合要求')),
        password: Joi.string().regex(/^[a-zA-Z0-9]{3,30}$/).required().error(new Error('密码格式不符合要求')),
        role: Joi.string().valid('normal', 'admin').required().error(new Error('角色值非法')),
        status: Joi.number().valid(1, 0).required().error(new Error('状态值非法'))
    };

    return Joi.validate(user, schema)
})


const editUserValidate = user => { //设置修改用户的验证
    const schema = {
        id: Joi
            .string()
            .required()
            .error(new Error('用户id非法')),
        username: Joi
            .string()
            .required()
            .min(2)
            .max(20)
            .error(new Error('用户名不符合验证规则')),
        email: Joi
            .string()
            .required()
            .email()
            .error(new Error('邮箱不符合验证规则')),
        password: Joi
            .string()
            .required()
            .error(new Error('密码不符合验证规则')),
        role: Joi
            .string()
            .required()
            .valid('normal', 'admin')
            .error(new Error('角色不符合验证规则')),
        status: Joi
            .number()
            .required()
            .valid(0, 1)
            .error(new Error('状态不符合验证规则'))
    }
    return Joi.validate(user, schema)
}
// 将用户集合做为模块成员进行导出
module.exports = {
    User,
    addSchema,
    editUserValidate

}